package com.yisu.expressway.manager.core.service;

import com.yisu.expressway.ewf.entity.GoodsCategory;
import com.yisu.expressway.manager.domain.request.GoodsCategoryRequest;

/**
 * 商品类目接口
 * Created by ZJ on 2017/4/21.
 */
public interface IGoodsCategory {
    /**
     * 编辑商品类目信息
     * @param goodsCategory 商品类目基本信息
     * @return 成功，失败
     */
    boolean modifyGoodsCategory(GoodsCategory goodsCategory);

    /**
     * 通过主键ID获取商品类目信息
     * @param primaryKey 主键信息
     * @return 商品类目信息
     */
    GoodsCategory getGoodsCategoryModelByPrimaryKey(long primaryKey);

    /**
     * 通过主键删除商品类目信息
     * @param primaryKey 主键信息
     * @return 成功失败
     */
    boolean deleteGoodsCategory(long primaryKey);

    /**
     * 通过节点ID，获取商品类目树结构信息
     * @param nodeId 节点ID
     * @return 树信息
     */
    String getGoodsCategoryTreeInfo(String nodeId);

    /**
     * 通过节点ID，获取商品类目一级树结构信息
     * @return 树信息
     */
    String getGoodsCategoryTreeInfoForFirstLevel();

    /**
     * 通过父节点ID获取下级最大排序
     * @param parentId 父节点信息
     * @return 排序值
     */
    int getMaxSortByParentId(String parentId);

    /**
     * 上移节点
     * @param nodeId
     * @return
     */
    boolean moveUpByNodeId(String nodeId);

    /**
     * 下移节点
     * @param nodeId
     * @return
     */
    boolean moveDownNodeId(String nodeId);

    /**
     * 通过节点ID，获取当前节点下是否存在子集节点
     * @param nodeId 当前节点
     * @return 是、否
     */
    boolean isHaveChildNode(String nodeId);

    /**
     * 通过商品分类编号获取其路径名称
     * @param goodsCategoryCode
     * @return
     */
    String getGoodsCategoryPathNameByGoodsCategoryCode(String goodsCategoryCode);

    /**
     * 充值商品分类---解析数据专用
     * @return
     */
    boolean resetGoodsCategory();

    /**
     * 通过类目名称获取类目对象信息--解析数据专用
     * @param categoryName 类目名称
     * @return
     */
    GoodsCategory getGoodsCategoryModelByName(String categoryName);

    /**
     * 通过类目名称及上级编号获取类目对象信息--解析数据专用
     * @param goodsCategoryRequest 请求参数
     * @return
     */
    GoodsCategory getGoodsCategoryModelByNameAndParentId(GoodsCategoryRequest goodsCategoryRequest);
}
